4.8 FM模块
RDA5807M(这里简称为FM)是一款基于CMOS(互补金属氧化物半导体)工艺、单芯片、低功耗的FM广播立体声调谐芯片,支持50MHz--115MHz的频率范围,音频输出最大负载为32Ω。我们通过这个FM模块实现传统的收音机效果。
(1)介绍与准备
RDA5807是控制RDA5807器件的库,在Arduino IDE导航栏中点击“项目” —“导入库” —“管理库”,输入“RDA5807”,查找选择最新版本进行安装。

(2)实验代码
#include<Arduino.h>
#include<RDA5807.h> //FM收音
#include<Wire.h>
//I2C引脚
#define ESP32_I2C_SDA 5
#define ESP32_I2C_SCL 4
RDA5807 rx;
void setup() {
Wire.begin(ESP32_I2C_SDA, ESP32_I2C_SCL);
rx.setup();
rx.setVolume(5);
delay(500);
rx.setFrequency(9180);//FM
rx.setRDS(true);
//通道模式
pinMode(41, OUTPUT); //低电平为关闭喇叭输出,高电平为打开喇叭输出
pinMode(42, OUTPUT); //低电平为FM输入,高电平为ESP32的Io的输入
}
uint8_t modelsign = 1; //设置状态标志位
void loop() {
selectDevice(modelsign);
}
//模式切换
void selectDevice(uint8_t dev) {
if (dev == 0) {//喇叭关闭,ESP32的IO输出打开
digitalWrite(41, LOW);
digitalWrite(42, HIGH);
}
if (dev == 1) {//喇叭关闭,FM输出打开
digitalWrite(41, LOW);
digitalWrite(42, LOW);
}
if (dev == 2) {//喇叭打开,FM输出打开
digitalWrite(41, HIGH);
digitalWrite(42, HIGH);
}
}
(4)实验讲解
函数 | 说明 |
---|---|
Wire.begin(I2C_SDA, I2C_SCL) | 初始化Wire库,并以主机或从机身份加入I2C 总线 |
rx.setVolume() | 设置输出的音量大小 |
rx.setFrequency() | 设置FM的接收频率 |
(4)实验现象
编译上传代码后,在喇叭上输出收音机的音频。